﻿Public Class xtf_ABMproceso

    Dim ulg_row As DataRow
    Dim obj_Proceso As cls_proceso_ = Nothing

    Public Sub New()
        InitializeComponent()
        Cargarpersonal_()
        liv_procesopersonal.Tag = New DevExpress.XtraEditors.Controls.ListBoxItemCollection
        AgregarValidaciones()
    End Sub
    Public Overrides Sub CargarObjetos()
        Cargarpersonal_()
    End Sub

    Private Sub Cargarpersonal_()
        liv_personal.Items.Clear()
        Dim personal_ As New cls_personal_
        If personal_.CargarTodos Then
            For Each Personal As cls_personal_ In personal_.Items
                Dim Elemento As New CustomListItem
                Elemento.objeto = Personal
                Elemento.text = Personal.ToString
                liv_personal.Items.Add(Elemento)
            Next
            liv_personal.Enabled = True
        Else
            liv_personal.Enabled = False
        End If
    End Sub

    Public Shadows Sub Nuevo(ByRef listado As Form)
        Try
            frm_listado = listado
            Me.Text = CType(frm_listado, xtf_ListadoBase).lbl_modulo.Text & " - Nuevo"
            obj_Proceso = New cls_Proceso_
            btn_Registro.Enabled = False
            Me.Show()
        Catch ex As Exception
            'Dim frmError As New frm_ErrorManager(ex.Message)
        End Try
    End Sub

    Public Shadows Sub Modificar(ByRef Proceso As cls_proceso_, ByRef listado As Form, ByRef row As DataRow)
        If IsNothing(obj_Proceso) Then
            obj_Proceso = New cls_Proceso_
        End If
        obj_Proceso = Proceso
        frm_listado = listado
        ulg_row = row : bbi_imprimir.Enabled = True

        Me.Text = CType(frm_listado, xtf_ListadoBase).lbl_modulo.Text & " - " & obj_Proceso.ToString
        txt_ID.Text = obj_Proceso.idProceso
        txt_Nombre.Text = obj_Proceso.nombre
        txt_Descripcion.Text = obj_Proceso.descripcion
        btn_Registro.Enabled = True
        txt_valor.Text = obj_Proceso.valor
        liv_procesopersonal.Items.Clear()
        liv_procesopersonal.Tag.Clear()
        If Not IsNothing(obj_Proceso.procesopersonal_) Then
            If Not IsNothing(obj_Proceso.procesopersonal_.Items) Then
                For Each procesoprocesopersonal As cls_procesopersonal_ In obj_Proceso.procesopersonal_.Items
                    Dim Elemento As New CustomListItem
                    Elemento.objeto = procesoprocesopersonal
                    Elemento.text = procesoprocesopersonal.ToString
                    liv_procesopersonal.Items.Add(Elemento)
                Next
            End If
        End If

        Me.Show()

    End Sub

    Public Overrides Function ComprobarDatos() As Boolean
        If Not ControlarValidaciones() Then
            ErrManagerShow("000004", Me)
            Return False
        End If
        Return True
    End Function

    Public Shadows Sub btn_Guardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Guardar.Click
        If ComprobarDatos() Then
            obj_Proceso.nombre = txt_Nombre.Text
            obj_Proceso.descripcion = txt_Descripcion.Text
            obj_Proceso.valor = txt_valor.Text
            'Guardo Personal------------------------------------------------------
            If IsNothing(obj_Proceso.procesopersonal_) Then
                obj_Proceso.procesopersonal_ = New cls_procesopersonal_
            End If
            If IsNothing(obj_Proceso.procesopersonal_.Items) Then
                obj_Proceso.procesopersonal_.Items = New Collections.Generic.List(Of cls_procesopersonal_)
            End If
            obj_Proceso.procesopersonal_.Items = New Collections.Generic.List(Of cls_procesopersonal_)
            For Each Elemento As CustomListItem In liv_procesopersonal.Items
                obj_Proceso.procesopersonal_.Items.Add(Elemento.objeto)
            Next
            For Each Elemento As CustomListItem In liv_procesopersonal.Tag
                If CType(Elemento.objeto, cls_procesopersonal_).idprocesopersonal <> 0 Then
                    CType(Elemento.objeto, cls_procesopersonal_).Eliminar(CType(Elemento.objeto, cls_procesopersonal_).idprocesopersonal)
                End If
            Next
            '---------------------------------------------------------------------


            If txt_ID.Text = "" Then
                obj_Proceso.Nuevo(True)
                If frm_listado.Visible Then
                    ulg_row = CType(frm_listado, xtf_LISTADOproceso_).AgregarItem(obj_Proceso)
                End If
                Modificar(obj_Proceso, frm_listado, ulg_row)
            Else
                obj_Proceso.Modificar()
                If frm_listado.Visible Then
                    CType(frm_listado, xtf_LISTADOproceso_).ModificarItem(obj_Proceso, ulg_row)
                End If
                Modificar(obj_Proceso, frm_listado, ulg_row)
            End If
            flg_Modificado = False : btn_Guardar.Enabled = False : bbi_guardar.Enabled = False
        End If
    End Sub

    Private Sub btn_Registro_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Registro.Click
        If Not IsNothing(obj_Proceso.registro) Then
            Dim ABMRegistro As New xtf_ABMRegistro(obj_Proceso.registro)
            If ABMRegistro.ShowDialog() = Windows.Forms.DialogResult.OK Then
                flg_Modificado = True
            End If
        End If
    End Sub


    Private Sub btn_Cerrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Cerrar.Click
        If flg_Modificado Then
            bol_comprobarCerrado = False
            Select Case ErrManagerShow("000001", Me)
                Case Windows.Forms.DialogResult.Yes
                    If ComprobarDatos() Then
                        btn_Guardar_Click(Nothing, Nothing)
                    Else
                        Exit Sub
                    End If
                Case Windows.Forms.DialogResult.Cancel : bol_comprobarCerrado = True
                    Exit Sub
            End Select
        End If
        Me.Dispose()
    End Sub

#Region "Procesos_Personal"
    Private Sub btn_AgregarA_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Agregar.Click
        For i As Integer = 0 To liv_personal.SelectedItems.Count - 1
            Dim Elemento As New CustomListItem '= liv_maquinaria.SelectedItems(0)
            Elemento.objeto = New cls_procesopersonal_
            CType(Elemento.objeto, cls_procesopersonal_).idpersonal = CType(CType(liv_personal.SelectedItems(i), CustomListItem).objeto, cls_personal_).idpersonal
            Elemento.text = Elemento.objeto.ToString
            Dim flag As Boolean = False
            For Each customitem As CustomListItem In liv_procesopersonal.Items
                Dim procesopersonal As cls_procesopersonal_ = customitem.objeto
                If procesopersonal.idpersonal = CType(Elemento.objeto, cls_procesopersonal_).idpersonal Then
                    flag = True
                End If
            Next
            If flag = False Then
                liv_procesopersonal.Items.Add(Elemento)
            End If
        Next
    End Sub

    Private Sub btn_AgregarTodosA_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_AgregarTodos.Click
        For i As Integer = 0 To liv_personal.Items.Count - 1
            Dim Elemento As New CustomListItem '= liv_maquinaria.SelectedItems(0)
            Elemento.objeto = New cls_procesopersonal_
            CType(Elemento.objeto, cls_procesopersonal_).idpersonal = CType(CType(liv_personal.Items(i), CustomListItem).objeto, cls_personal_).idpersonal
            Elemento.text = Elemento.objeto.ToString
            Dim flag As Boolean = False
            For Each customitem As CustomListItem In liv_procesopersonal.Items
                Dim procesopersonal As cls_procesopersonal_ = customitem.objeto
                If procesopersonal.idpersonal = CType(Elemento.objeto, cls_procesopersonal_).idpersonal Then
                    flag = True
                End If
            Next
            If flag = False Then
                liv_procesopersonal.Items.Add(Elemento)
            End If
        Next
    End Sub

    Private Sub btn_QuitarA_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Quitar.Click
        If liv_procesopersonal.SelectedItems.Count > 0 Then
            For i As Integer = liv_procesopersonal.SelectedItems.Count - 1 To 0 Step -1
                Dim Elemento As CustomListItem
                Elemento = liv_procesopersonal.SelectedItems(i)
                liv_procesopersonal.Items.Remove(Elemento)
                liv_procesopersonal.Tag.add(Elemento)
            Next
        End If
    End Sub

    Private Sub btn_QuitarTodosA_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_QuitarTodos.Click
        If liv_procesopersonal.Items.Count > 0 Then
            For i As Integer = liv_procesopersonal.Items.Count - 1 To 0 Step -1
                Dim Elemento As CustomListItem
                Elemento = liv_procesopersonal.Items(i)
                liv_procesopersonal.Items.Remove(Elemento)
                liv_procesopersonal.Tag.add(Elemento)
            Next
        End If
    End Sub
#End Region

End Class